Skip to content

[pull] main from expo:main#623

Merged
pull[bot] merged 9 commits intocode:mainfrom
expo:main
Feb 24, 2026
Merged

[pull] main from expo:main#623
pull[bot] merged 9 commits intocode:mainfrom
expo:main

Conversation

@pull
Copy link

@pull pull bot commented Feb 24, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

zoontek and others added 9 commits February 24, 2026 10:52
# Why

Android (and Expo) now enforces edge-to-edge, making several `StatusBar`
/ `NavigationBar` APIs obsolete. This PR deprecate and no-op those APIs.

Those APIs are:

- `StatusBar`
[`setBackgroundColor`](https://reactnative.dev/docs/0.83/statusbar#setbackgroundcolor-android)
- `StatusBar`
[`setTranslucent`](https://reactnative.dev/docs/0.83/statusbar#settranslucent-android)
- `NavigationBar`
[`getBackgroundColorAsync`](https://docs.expo.dev/versions/v54.0.0/sdk/navigation-bar/#navigationbargetbackgroundcolorasync)
/
[`setBackgroundColorAsync`](https://docs.expo.dev/versions/v54.0.0/sdk/navigation-bar/#navigationbarsetbackgroundcolorasynccolor)
- `NavigationBar`
[`getBehaviorAsync`](https://docs.expo.dev/versions/v54.0.0/sdk/navigation-bar/#navigationbargetbehaviorasync)
/
[`setBehaviorAsync`](https://docs.expo.dev/versions/v54.0.0/sdk/navigation-bar/#navigationbarsetbehaviorasyncbehavior)
- `NavigationBar`
[`getBorderColorAsync`](https://docs.expo.dev/versions/v54.0.0/sdk/navigation-bar/#navigationbargetbordercolorasync)
/
[`setBorderColorAsync`](https://docs.expo.dev/versions/v54.0.0/sdk/navigation-bar/#navigationbarsetbordercolorasynccolor)
- `NavigationBar`
[`getButtonStyleAsync`](https://docs.expo.dev/versions/v54.0.0/sdk/navigation-bar/#navigationbargetbuttonstyleasync)

But we can also includes some long-time deprecated functions and props,
like `networkActivityIndicatorVisible` (deprecated since iOS 13 release)
or `androidNavigationBar.visible` / `expo-navigation-bar`
`legacyVisible` (deprecated 3 years ago)

# How

### @expo/config-plugins

- Deprecate and no-op `androidStatusBar.backgroundColor` and
`androidStatusBar.translucent` and emit a warning in case of usage
- Enforce `android:statusBarColor` to be `@android:color/transparent`

### @expo/config-types

- Deprecate `androidStatusBar.backgroundColor`,
`androidStatusBar.translucent` and `androidNavigationBar`

### @expo/prebuild-config

- Remove `androidNavigationBar.enforceContrast` property handling in
`withEdgeToEdge` (it has been moved to the `expo-navigation-bar` plugin
config)
- Remove `androidNavigationBar.visible` property handling / warning
- Deprecate and no-op `androidNavigationBar.backgroundColor` property
- Enforce `android:navigationBarColor` to be
`@android:color/transparent`

## expo-navigation-bar

- Deprecate and no-op `setBackgroundColorAsync`,
`getBackgroundColorAsync`, `setBorderColorAsync`, `getBorderColorAsync`,
`setBehaviorAsync`, `getBehaviorAsync`, `setPositionAsync`,
`unstable_getPositionAsync` and `getButtonStyleAsync` functions. Remove
their native Android implementations
- Deprecate and no-op `borderColor`, `backgroundColor`, `behavior`,
`position` plugin options
- Add the `enforceContrast` plugin option. Fallback to
`androidNavigationBar.enforceContrast` if `androidNavigationBar` is set
- Remove `legacyVisible` property handling / warning
- Remove the (now unnecessary) `@react-native/normalize-colors`
dependency

## expo-status-bar

- Deprecate and no-op the `backgroundColor`,
`networkActivityIndicatorVisible`, and `translucent` `StatusBar` props
- Deprecate and no-op the `setStatusBarBackgroundColor`,
`setStatusBarNetworkActivityIndicatorVisible`, and
`setStatusBarTranslucent` functions

## Other

- Remove deprecated `NavigationBar` screen examples from the test app

# Test Plan

1. Run `expo-navigation-bar`, `expo-status-bar `, `@expo/config-plugins`
and `@expo/prebuild-config` packages and plugins unit tests
2. Run `npx expo prebuild` on a bare Android project with the following
`app.json` and verify:
- `android:statusBarColor` is `@android:color/transparent` in
`styles.xml`
- `android:navigationBarColor` is `@android:color/transparent` in
`styles.xml`
   - Build warnings are emitted for each deprecated property used

# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…in permission request (#43377)

# Why

This PR fixes a threading issue in iOS notification permissions where a higher quality-of-service thread was waiting on a lower quality-of-service thread.

# How

Replaced the async `Task.detached` approach with the callback-based `getNotificationSettings` method to avoid thread priority inversion.

# Test Plan

- notification tester app

# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why

We can use **ccache** similar to `test-suite-brownfield-isolated.yml`'s
ios job

# How

Added similar **ccache** setup. This helps us reduce build time from 2
hours to around 30 minutes

# Test Plan

- Validated that the compilation test passes
- Validated that it's faster now with **ccache**

# Checklist

- [X] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [X] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
# Why

SDK 55 is about to be released and we should include a full guide
explaining how to use the new brownfield isolated approach

# How

Add brownfield isolated approach guide

# Test Plan

N / A

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)

---------

Co-authored-by: Aman Mittal <amandeepmittal@live.com>
# Why

There was new react-native-screens release, which introduces several
features needed in router:
- `show` method for SplitView
- support for images in header items sub menus
- fixes the scroll view automatic insets in tabs

# How

<!--
How did you build this feature or fix this bug and why?
-->

# Test Plan

1. Build bare-expo
2. Build router
3. Unit tests in router
4. Test all the navigation features of router

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
@pull pull bot locked and limited conversation to collaborators Feb 24, 2026
@pull pull bot added the ⤵️ pull label Feb 24, 2026
@pull pull bot merged commit b7db157 into code:main Feb 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants